package CoteClient;

import java.io.BufferedReader;
import java.io.IOException;
import java.net.Socket;
import java.util.Vector;

import javax.swing.JOptionPane;

public class Reception implements Runnable {

	private BufferedReader in;
	private String message = null;
	private Controleur controleur;
	private String typeRecu = null;

	public Reception(BufferedReader in, Controleur cont) {
		this.in = in;
		controleur = cont;
	}

	public void run() {
		while (true) {
			try {
				message = in.readLine();
				typeRecu = message;
				if (typeRecu.equals("dial")) {
					message = in.readLine();
					if (message.equals("validation Connection")) {
						JOptionPane.showMessageDialog(null,"Connexion validé, Bienvenue");
						message = in.readLine();

						System.out.println(message);
						if (message.contains("type Compte : ")) {
							String[] ch = controleur.decoupe(message);
							controleur.setTypeCompte(ch[1]); // Recuperation
																// type du
																// compte
							System.out.println("type du compte :" + ch[1]);
						}

						message = in.readLine();
						if (message.contains("statut Compte : ")) {
							String[] ch = controleur.decoupe(message);
							controleur.setStatutCompte(ch[1]); // Recuperation
																// statut du
																// compte
							System.out.println("statut du compte :" + ch[1]);
						}

						Vector<String> vec = new Vector<String>();
						boolean vrai = true;
						while (vrai) {
							message = in.readLine();
							if (message.equals("fin"))
								vrai = false;
							else
								vec.add(message);
						}
						controleur.setVec(vec);
						controleur.lancerMenu();
						break;
					} else if (message.equals("validation inscription")) {
						JOptionPane.showMessageDialog(null,
								"Votre compte a été crée");
						controleur.connecterUtilisateur();
						break;
					} else {
						JOptionPane.showMessageDialog(null, message);
						break;
					}
				} else if (typeRecu.equals("addCont")) {
					JOptionPane.showMessageDialog(null,
							"Le contact a été ajouté");
					message = in.readLine();

					Vector<String> vec = new Vector<String>();
					boolean vrai = true;
					while (vrai) {
						message = in.readLine();
						if (message.equals("fin"))
							vrai = false;
						else
							vec.add(message);
					}
					controleur.setVec(vec);

					controleur.lancerMenu();
				} else if (message.equals("actuCont")) {
					System.out.println("dans reception");
					Vector<String> vec = new Vector<String>();
					boolean vrai = true;
					while (vrai) {
						message = in.readLine();
						if (message.equals("fin"))
							vrai = false;
						else
							vec.add(message);
					}
					controleur.setVec(vec);
					controleur.lancerMenu();
					break;
				} else if (typeRecu.equals("infCont")) {
					message = in.readLine();
					controleur.informations(message);
				} else if (typeRecu.equals("statutChg")) {
					message = in.readLine();
					controleur.statutChange(message);
					break;
				} else if (typeRecu.equals("deco")) {
					message = in.readLine();
					controleur.quit(message);
					break;
				} else if (typeRecu.equals("modifMdp")) {
					message = in.readLine();
					JOptionPane.showMessageDialog(null, message);
					controleur.lancerMenu();
					break;
				} else if (typeRecu.equals("ValEnvoiMess")) {
					System.out.println("votre mess a ete envoye");
					break;
				} else if (typeRecu.equals("EnvoiMess")) {
					message = in.readLine();
					System.out.println(controleur.getSocket().getLocalPort());
				//	System.out.println("vous avez reçut un message : " + message);
					JOptionPane.showMessageDialog(null,"Votre message a bien été envoyé");
					break;
				} else {
					System.out.println("message non capter dans une categorie");
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}